package com.ruoyi.web.service.impl;

import java.util.HashMap;
import java.util.List;

import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.web.domain.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.web.mapper.OldNewsMapper;
import com.ruoyi.web.service.IOldNewsService;
import com.ruoyi.common.core.text.Convert;
import org.springframework.transaction.annotation.Transactional;

/**
 * 新闻（旧）Service业务层处理
 * 
 * @author drx
 * @date 2024-03-18
 */
@Service
public class OldNewsServiceImpl implements IOldNewsService 
{
    @Autowired
    private OldNewsMapper oldNewsMapper;

    /**
     * 查询新闻（旧）
     * 
     * @param id 新闻（旧）主键
     * @return 新闻（旧）
     */
    @Override
    public OldNews selectOldNewsById(Long id)
    {
        return oldNewsMapper.selectOldNewsById(id);
    }

    /**
     * 查询新闻（旧）列表
     * 
     * @param oldNews 新闻（旧）
     * @return 新闻（旧）
     */
    @Override
    public List<OldNews> selectOldNewsList(OldNews oldNews)
    {
        return oldNewsMapper.selectOldNewsList(oldNews);
    }

    /**
     * 新增新闻（旧）
     * 
     * @param oldNews 新闻（旧）
     * @return 结果
     */
    @Override
    public int insertOldNews(OldNews oldNews)
    {
        oldNews.setCreateTime(DateUtils.getNowDate());
        oldNews.setCreateBy(ShiroUtils.getSysUser().getLoginName());
        oldNews.setCreateName(ShiroUtils.getSysUser().getUserName());
        oldNews.setUpdateTime(DateUtils.getNowDate());
        oldNews.setUpdateBy(ShiroUtils.getSysUser().getLoginName());
        oldNews.setUpdateName(ShiroUtils.getSysUser().getUserName());
        return oldNewsMapper.insertOldNews(oldNews);
    }

    /**
     * 修改新闻（旧）
     * 
     * @param oldNews 新闻（旧）
     * @return 结果
     */
    @Override
    public int updateOldNews(OldNews oldNews)
    {
        oldNews.setUpdateTime(DateUtils.getNowDate());
        oldNews.setUpdateBy(ShiroUtils.getSysUser().getLoginName());
        oldNews.setUpdateName(ShiroUtils.getSysUser().getUserName());
        return oldNewsMapper.updateOldNews(oldNews);
    }

    /**
     * 批量删除新闻（旧）
     * 
     * @param ids 需要删除的新闻（旧）主键
     * @return 结果
     */
    @Override
    public int deleteOldNewsByIds(String ids)
    {
        return oldNewsMapper.deleteOldNewsByIds(Convert.toStrArray(ids),ShiroUtils.getSysUser().getLoginName());
    }

    /**
     * 删除新闻（旧）信息
     * 
     * @param id 新闻（旧）主键
     * @return 结果
     */
    @Override
    public int deleteOldNewsById(Long id)
    {
        return oldNewsMapper.deleteOldNewsById(id,ShiroUtils.getSysUser().getLoginName());
    }

    /**
     * 修改oldNews发布状态
     *
     * @param oldNews
     * @return 结果
     */
    @Transactional
    public int updateOldNewsState(OldNews oldNews)
    {
        oldNews.setUpdateTime(DateUtils.getNowDate());
        oldNews.setUpdateBy(ShiroUtils.getSysUser().getLoginName());
        oldNews.setUpdateName(ShiroUtils.getSysUser().getUserName());
        return oldNewsMapper.updateOldNews(oldNews);
    }

    @Override
    public void updateNewsBrowseNum(Long id){
        oldNewsMapper.updateNewsBrowseNum(id);
    }

    /*获取上下文*/
    @Override
    public AjaxResult getUpandDown(Long id){
        AjaxResult ajaxResult = new AjaxResult();
        try{
            List<HashMap<String, Object>> upandDown = oldNewsMapper.getUpandDown(id);
            ajaxResult.put("data",upandDown);
            ajaxResult.put("code","200");
            ajaxResult.put("msg","查询成功！");
        }catch (Exception e){
            e.printStackTrace();
            ajaxResult.put("code","500");
            ajaxResult.put("msg","获取新闻上下篇失败，请联系管理员！");
        }
        return ajaxResult;
    }

    /**
     * 前端查询详情用
     *
     * @param id oldNews
     * @return AjaxResult
     */
    @Override
    public AjaxResult getOldNewsById(Long id)
    {
        AjaxResult ajaxResult=new AjaxResult();
        try{
            OldNews oldNews = oldNewsMapper.selectOldNewsById(id);
            if(null != oldNews){
                //状态为未启用时，返回空对象
                if("0".equals(oldNews.getState())){
                    ajaxResult.put("data",null);
                    ajaxResult.put("code","1");
                    ajaxResult.put("msg","查询成功！");
                    return  ajaxResult;
                }
            }
            ajaxResult.put("data",oldNews);
            ajaxResult.put("code","1");
            ajaxResult.put("msg","查询成功！");
        } catch (Exception e){
            e.printStackTrace();
            ajaxResult.put("code","500");
            ajaxResult.put("msg","获取新闻详情失败，请联系管理员！");
        }
        return ajaxResult;
    }

    /**
     * 获取药品页旧新闻视图
     *
     * @return AjaxResult
     */
    public AjaxResult getDrugOldNewsView(){
        AjaxResult ajaxResult = new AjaxResult();
        try{
            List<OldNews> list= oldNewsMapper.getDrugOldNewsView();
            ajaxResult.put("data",list);
            ajaxResult.put("code", Constants.SUCCESS);
            ajaxResult.put("msg","查询成功！");
        }catch (Exception e){
            e.printStackTrace();
            ajaxResult.put("code",Constants.FAIL);
            ajaxResult.put("msg","获取新闻视图失败，请联系管理员！");
        }
        return ajaxResult;
    }

}
